package com.boss.thirteen.dao;

import com.boss.salary.entity.SalaryPaymentRequisitionBack;
import com.boss.thirteen.entity.ThirteenAgencyVerify;

import java.util.List;
import java.util.Map;

public interface IThirteenGenerateSalaryDataDao {


    /**
     * 获取除实发外其它的工资项
     * @param agencyId
     * @param columnName
     * @return
     */
    List<Map<String, Object>> getPersonOtherSalary(String agencyId, List<String> columnName);

    /**
     * 获取有收款账户的工资字段
     * @param operateAgencyIds
     * @return
     */
    List<Map<String, Object>> getPayeeColumnName(List<String> operateAgencyIds);

    /**
     * 根据单位id修改生成状态
     * @param agencyId
     */
    void updatePayData(String agencyId, String payFlag);

    /**
     * 根据单位ids修改生成状态
     * @param agencyId
     */
    void updatePayDatas(List<String> agencyId, String payFlag,String paymentCreateTime);

    /**
     * 保存支付回单数据
     * @param salaryPaymentRequisitionBack
     */
    void insertPayBackData(SalaryPaymentRequisitionBack salaryPaymentRequisitionBack);

    /**
     * 保存支付回单数据
     * @param salaryPaymentRequisitionBack
     */
    void batchInsertPayBackData(List<SalaryPaymentRequisitionBack> salaryPaymentRequisitionBack);

    /**
     * 删除支付回单数据
     * @param salaryPaymentRequisitionBack
     */
    void deletePayBackData(SalaryPaymentRequisitionBack salaryPaymentRequisitionBack);

    /**
     * 获取所有支付回单数据
     * @param queryParam
     * @return
     */
    List<SalaryPaymentRequisitionBack> getPayBackData(Map<String, Object> queryParam);

    /**
     * 获取可撤销的支付回单数据
     * @return
     */
    List<Map<String, Object>> getRevokePayBackData(List<String> operateAgencyIds);

    /**
     * 获取单位银行上传状态
     * @return
     */
    List<ThirteenAgencyVerify> getBankDataStatus(List<String> agencyIds);

    /**
     * 判断所传单位是否所有人员类型都挂接了指标
     * @param agencyIds
     * @return
     */
    List<Map<String, Object>> isPaymentAllConnectPersonType(List<String> agencyIds);

    /**
     * 判断所传单位是否所有人员类型都挂接了指标工资项收款户
     * @param agencyIds
     * @return
     */
    List<Map<String, Object>> isSalaryAllConnectPersonType(List<String> agencyIds);
    /**
     * 判断所传单位查询工资类型
     * @param agencyIds
     * @return
     */
    List<Map<String,Object>> getPersonType(List<String> agencyIds);


    /**新生成支付方法调取20210426新增 */
    /**
     * 获取挂接指标的工资项（按区划分）
     * @param province
     * @return
     */
    List<String> getPayeeColumnName(String province);

    /**
     * 查询所有选中单位的工资汇总
     * @param agencyIds
     * @param columnName
     * @param is_agency 是否是单位检验
     * @return
     */
    List<Map<String, Object>> getPersonOtherSalary(List<String> agencyIds, List<String> columnName,boolean is_agency);
    /**新生成支付方法调取20210426新增 */

}
